package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.GaSubjectTable;
import com.jrx.anytxn.param.mapper.base.GaSubjectTableMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Classname ExtSubjectTableMapper
 * @Description 科目表mapper
 * @Date 2019/7/5 0005 上午 11:20
 * @Created by yf
 */
public interface ExtSubjectTableMapper extends GaSubjectTableMapper {

    /**
     * 根据租户Id查询所有科目表信息
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.SubjectTable>
     * @author fan.yang
     * date: 2019/10/15 0015 下午 16:03
     */
    List<GaSubjectTable> selectByTenId(@Param("tenantId") String tenantId,@Param("subjectId") String subjectId);

    /**
     * 获取有效的科目ID
     * @author fan.yang
     * date: 2019/11/27 0027 下午 17:21
     * @param tenantId
     * @return java.util.List<com.jrx.anytxn.param.entity.GaSubjectTable>
     */
    List<GaSubjectTable> selectEffectiveByTenId(@Param("tenantId") String tenantId);

    /**
     * 根据租户ID和科目表ID查询信息
     *
     * @param tenantId  租户ID
     * @param subjectId 科目ID
     * @return com.jrx.anytxn.param.entity.SubjectTable
     * @author fan.yang
     * date: 2019/10/15 0015 下午 16:08
     */
    GaSubjectTable selectBySubjectIdAndTenId(@Param("tenantId") String tenantId, @Param("subjectId") String subjectId);

    /**
     * 根据租户ID和科目表ID编辑
     *
     * @param subjectTable 科目表
     * @return int
     * @author fan.yang
     * date: 2019/10/15 0015 下午 16:17
     */
    @ParamTuningAnnotation
    int updateByTenIdAndSubjectId(GaSubjectTable subjectTable);

    /**
     * 根据租户ID和科目表ID删除信息
     *
     * @param tenantId  租户ID
     * @param subjectId 科目表ID
     * @return int
     * @author fan.yang
     * date: 2019/10/15 0015 下午 16:19
     */
    @ParamTuningAnnotation
    int deleteByTenIdAndSubjectId(@Param("tenantId") String tenantId, @Param("subjectId") String subjectId);

    /**
     * 查询所有该状态的 科目号 用于batch 批次
     *
     * @param tableStatus 状态
     * @return List<String>
     * @author Qingyao Xing
     * @date 2019/9/16 16:30
     */
    List<GaSubjectTable> selectAllSubjectId(@Param("tableStatus") String tableStatus);


    /**
     * 根据余额方向查询科目集合
     *
     * @param balDirection
     * @return java.util.List<com.jrx.anytxn.param.entity.SubjectTable>
     * @author: fan.yang
     * @date: 2019/10/9 0009 下午 14:46
     */
    List<GaSubjectTable> selectByBalDirection(@Param("balDirection") String balDirection, @Param("tenantId") String tenantId,@Param("orgId") String orgId);

    List<GaSubjectTable> selectEffectiveByTenIdAndOrgId(@Param("tenantId") String tenantId, @Param("orgId") String orgId);
}